实时 MQTT 控制
实时 MQTT 控制用于实时控制。如需提前发送计划,请参阅 计划 MQTT 控制。
本指南将帮助您在您的 SmartgridOne Controller 上配置 MQTT 以远程控制和监控电池和太阳能电池板的安装。
您需要的内容
- 具有互联网连接的 SmartgridOne Controller。
- MQTT 凭据:可以通过发送电子邮件至 support@eniris.be 来申请。
- Python 开发环境(或其他任何 MQTT 客户端)。本指南使用用 Python 编写的基本示例帮助您入门 MQTT 和发送命令。我们推荐使用 Python,因为它易于使用,但也支持其他 MQTT 客户端。
额外信息
MQTT 是一种快速的互联网通信协议。它是一个发布/订阅消息系统,允许您的机器与 SmartgridOne Controller 之间建立直接连接。您的资产划分为太阳能、电池、电动车和 HVAC 组。
初次配置(新用户的起点)
我有一个希望设置为 MQTT 远程控制的 SmartgridOne Controller。
1. 检查您的网络
确保您的网络允许通过 1883 端口进行 MQTT 网络流量。您可以使用以下命令进行检查:
nc -zv mqtt.eniris.be 1883
如果此命令不可用,您可以选择下载并执行 此 python 代码。
如有疑问,请咨询您的网络工程师,或在出现连接错误时暂时使用手机的 4G/5G 热点。
当从您的网络无法访问 1883 端口时,我们提供备用的方法在 80 端口。这可以在本手册的后续步骤中在您的 MQTT 客户端中进行配置。
2. 添加您的设备
登录到调试界面并确保 设备已添加 到 SmartgridOne Controller。
3. 添加 MQTT 外部信号




4. 启用 MQTT 远程信号
字段 'VPP ID' 必须留空。
备份机制超时告诉 SmartgridOne Controller 它应该等待多长时间以获取新命令。当 SmartgridOne Controller 停止接收命令时,它在超时后会自动采用默认策略。
完成后,选择您希望包括在 MQTT 远程控制中的所有设备。


5. 远程信号已添加
现在,SmartgridOne Controller 上已激活 MQTT 远程控制接口。
我们现在准备使用一个简单的示例发送一些基本的命令。状态列告诉您是否有命令正在活动。

Python 演示脚本
一个好的起点是通过一个简单的示例测试您新设置的 集成。
此测试代码简单地工作,不断发送以下命令:
- 电池:以 5 kW 充电
- 太阳能:将功率设为 0 kW
SmartgridOne Controller 不断以“反馈”消息响应,包含观察到的电网和资产功率值。该功能也包含在此示例中。
请在您喜欢的 Python IDE 中下载以下文件。填写您的序列号和 MQTT 凭据并执行脚本:
当上述操作成功时,您可以继续发送其他类型的命令。所有命令在我们的 MQTT 远程控制文档中都有描述。
发送命令的 MQTT 文档
本节详细说明了用于远程控制 SmartgridOne Controller 网络内设备的电源策略的 MQTT 消息格式和有效负载要求。
MQTT 主题
用于发送命令的 MQTT 主题结构如下:
standard1/rp_one_s/remoteControlMetrics/'controller SN'
其中“controller SN”应替换为您打算控制的 SmartgridOne Controller 的实际序列号。
MQTT 有效负载结构
命令以 JSON 有效负载发送。有 效负载结构的设计旨在为智能电网系统的不同组件指定各种电力管理策略和设定点。以下是有效负载的轮廓及详细字段描述:
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": "<Unix Timestamp>",
"fields": {
"<Component Policy>": "<Policy Type>",
"<Component Power Setpoint>": <Setpoint in watts>
}
}
字段描述
可以同时控制多种设备类型(例如电池 + 太阳能)。
- extraTags (对象):
- nodeId (字符串):在 SmartgridOne Controller 网络中节点的唯一标识符。这等于您的序列号,后面跟随 '_site_0',适用于大多数 SmartgridOne Controller 设备。
- time (整数):以秒为单位的 Unix 时间戳,指示消息发送的时间。
- fields (对象):
- <Component>_policy (字符串):组件的策略类型。是可选的,如果未指 定,系统将回退为 SmartgridOne Controller 的默认设置。
- <Component>_power_setpoint_w (浮点数):组件的期望功率设定点,单位为瓦特。这是可选的,仅在指定了相应策略时相关。
组件和策略
相同类型的资产(例如两块电池)将合并为一个组件。例如,当安装两块 5 kWh 电池时,它将被视为一块 10 kWh 电池。
fields 对象中的每个组件都可以包含一个策略和一个功率设定点。可以控制以下组件:
-
solar_policy 和 solar_power_setpoint_w:
- 控制太阳能发电的政策和设定点。支持的政策:
- 策略设定点:设置所有连接的太阳能设施所产生的最大功率。字段 solar_power_setpoint_w 应设置为瓦特的生产功率限制。
- 策略进料限制:以全功率产生,遵循当前的电网限制。
- 策略成本:启用前一天价格(EPEX 现货市场)成本最小化的太阳能生产。当出现负的注入价格时,我们减少生产以供自用;当提取和注入价格均为负时,我们关闭所有太阳能设施。字段 solar_power_setpoint_w 被忽略。
- 策略关闭:禁用所有太阳能资产的 所有交互。警告:在此模式下,限制不会被保护。字段 solar_power_setpoint_w 被忽略。
- 控制太阳能发电的政策和设定点。支持的政策:
-
storage_policy 和 storage_power_setpoint_w:
-
控制能量存储系统的策略和电力放电或充电速率。
- 策略设定点:为电池组设置总的充电功率(正设定点)或放电功率(负设定点)。当多个电池连接时,设定点按可用的充电/放电功率进行拆分,以均匀施加负载到电池上。字段 storage_power_setpoint_w 设置为所需的电池功率。
- 策略成本:通过在便宜的时段充电和在贵的时段使用能量来实现电池的日间价格(EPEX现货市场)成本优化。字段 storage_power_setpoint_w 被忽略。
- 策略自耗:为电池启用简单的自耗算法。多余的太阳能生产在白天储存到电池中,太阳落下时,从电池中获取能量。字段 storage_power_setpoint_w 被忽略。
- 策略关闭:禁用所有电池资产的交互。警告:在此模式下,限制没有得到保护。字段 storage_power_setpoint_w 被忽略。
-
heat_pump_policy:
- 切换热泵系统的开/关。最小和最大开启时间将始终得到遵守。
- 策略成本:为热泵启用日间价格(EPEX现货市场)成本优化。地方动态定价算法决定最佳的开启时间段。
- 策略自耗:如果产生了多余的太阳能,则开启热泵。
- 策略关机:关闭热泵。
- 策略开机:开启热泵。
- 切换热泵系统的开/关。最小和最大开启时间将始终得到遵守。
-
switched_load_policy:
- 切换继电器控制系统的开/关。这可以是内置继电器或网络连接的继电器。
- 策略成本:为继电器启用日间价格(EPEX现货市场)成本优化。
- 策略自耗:如果产生了多余的太阳能,则开启继电器。
- 策略关机
- 策略开机
- 切换继电器控制系统的开/关。这可以是内置继电器或网络连接的继电器。
-
variable_power_load_policy 和 variable_power_load_power_setpoint_w:
- 管理电动汽车的功率消费策略和设定点。
- 策略设定点:为电动汽车组设置总的充电功率。字段 variable_power_load_power_setpoint_w 设置为所需的充电功率。
- 策略成本:通过在便宜的时段进行充电,为电池启用日间价格(EPEX现货市场)成本优化。字段 variable_power_load_power_setpoint_w 被忽略。
- 策略自耗:如果产生了多余的太阳能,则启用充电。字段 variable_power_load_power_setpoint_w 被忽略。
- 策略关闭:禁用所有电动汽车资产的交互。字段 variable_power_load_power_setpoint_w 被忽略。
- 管理电动汽车的功率消费策略和设定点。
-
site_policy 和 site_power_setpoint_w:
- 管理场地出口限制。
- 策略出口:为场地设置出口限制。字段 site_power_setpoint_w 设置为出口限制。
- 策略默认:将场地限制恢复为控制器配置中设置的默认出口功率。
- 管理场地出口限制。
设备控制
特定设备也可以被控制,而不是根据其类型控制设备组。消息的结构相同:
nodeId
_policy 和nodeId
_power_setpoint_w
当两个命令发送到同一资产(例如,一个设备特定命令发送给太阳能逆变器,一个命令发送给所有太阳能设备)时,设备特定控制方法将优先于设备类型控制。